// Copyright rocedu@BESTI rocedu@qq.com All rights reserved.

/*
* 该程序用于创建一个文件，文件名通过命令行参数传入。
* 如果未提供文件名，则程序会输出错误信息。
*/

#include <stdio.h>    // 包含标准输入输出库
#include <fcntl.h>    // 包含文件控制选项
#include <string.h>   // 包含字符串处理函数
#include <limits.h>   // 修正为通用头文件
#include "rocerror.h" // 引入错误处理库

int main(int argc, char *argv[]) {
    char filename[PATH_MAX] = { 0 }; // 存储文件名的缓冲区

    // 检查命令行参数的数量
    if (argc != 2) {
        app_error("You must supply a filename as an argument");
    }

    // 复制传入的文件名到filename变量，避免缓冲区溢出
    strncpy(filename, argv[1], PATH_MAX - 1);
    filename[PATH_MAX - 1] = '\0'; // 确保字符串以'\0'结尾

    // 创建文件并检查错误
    if (creat(filename, 0644) == -1) {
        unix_error("Can't create file");
    }
    return 0;
}
